<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test.js"></script>
</head>
<body>
<p id="description"></p>
<form method="get" id="happy_form">
<fieldset name="victim"></fieldset>
<input name="victim" type="text" value="lorem ipsum"/>
<button name="victim">lorem ipsum</button>
<select name="victim"></select>
<textarea name="victim"></textarea>
<output name="victim"></output>
<object name="victim"></object>
</form>
<form action="" id="soon_to_be_happy_form">
<select required="" id="soon_to_be_happy_select">
<option>abc</option>
</select>
</form>
<div id="console"></div>
<script>
description("This test checks if reportValidity() returns correctly a true (meaning no error) result.");

debug('Elements valid from the begining');
shouldBe('document.getElementsByTagName("fieldset")[0].reportValidity()', 'true');
shouldBe('document.getElementsByTagName("input")[0].reportValidity()', 'true');
shouldBe('document.getElementsByTagName("button")[0].reportValidity()', 'true');
shouldBe('document.getElementsByTagName("select")[0].reportValidity()', 'true');
shouldBe('document.getElementsByTagName("textarea")[0].reportValidity()', 'true');
shouldBe('document.getElementsByTagName("output")[0].reportValidity()', 'true');
shouldBe('document.getElementsByTagName("object")[0].reportValidity()', 'true');
shouldBe('document.getElementById("happy_form")[0].reportValidity()', 'true');
debug('');

debug('Element valid when changed');
jsTestIsAsync = true;
var form = document.getElementById('soon_to_be_happy_form');
var select = document.getElementById('soon_to_be_happy_select');
form.onchange = function() {
    shouldBeTrue('form.reportValidity()');
    debug('');
    finishJSTest();
};
window.onload = function() {
    select.value = null;
    select.focus();
    if (window.eventSender)
        eventSender.keyDown('a');
};

</script>
</body>
</html>
